package utils

import (
	"context"
	"errors"
)

type contextKey string

func SetContextValue(ctx context.Context, key string, value any) context.Context {
	return context.WithValue(ctx, contextKey(key), value)
}

func GetContextValue(ctx context.Context, key string) any {
	return ctx.Value(contextKey(key))
}

// 类型安全的获取方法
func GetUserID(ctx context.Context) (uint, error) {
	v := GetContextValue(ctx, "user_id")
	if id, ok := v.(uint); ok {
		return id, nil
	}
	return 0, errors.New("用户ID不存在或类型错误")
}
